package com.yuelao.yuelao_backend.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.yuelao.yuelao_backend.config.PostgreSQLJsonbListTypeHandler;
import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;

/**
 * 挖矿池表
 */
@Data
@TableName(value = "mining_pools", autoResultMap = true)
public class MiningPool implements Serializable {

    private static final long serialVersionUID = 1L;

    @TableId(type = IdType.AUTO)
    private Long id;

    /**
     * 矿池名称
     */
    private String name;

    /**
     * 矿池类型
     */
    private String poolType;

    /**
     * 描述
     */
    private String description;

    /**
     * 质押代币
     */
    private String stakingToken;

    /**
     * 奖励代币数组（JSON）
     */
    @TableField(typeHandler = PostgreSQLJsonbListTypeHandler.class)
    private List<String> rewardTokens;

    /**
     * 最小质押量（以分为单位）
     */
    private Integer minStake;

    /**
     * 锁定期（天）
     */
    private Integer lockPeriod;

    /**
     * 当前年化收益率
     */
    private BigDecimal currentApy;

    /**
     * 总流动性
     */
    private Long totalLiquidity;

    /**
     * 质押人数
     */
    private Integer totalStakers;

    /**
     * 风险等级
     */
    private String riskLevel;

    /**
     * 是否活跃
     */
    private Boolean isActive;

    /**
     * 排序
     */
    private Integer sortOrder;

    /**
     * 创建时间
     */
    private LocalDateTime createdAt;

    /**
     * 更新时间
     */
    private LocalDateTime updatedAt;
    
    /**
     * 获取状态（兼容方法 - 基于isActive）
     * @return 状态：1-活跃, 0-不活跃
     */
    public Integer getStatus() {
        return (isActive != null && isActive) ? 1 : 0;
    }
    
    /**
     * 获取代币符号（兼容方法 - 返回stakingToken）
     * @return 代币符号
     */
    public String getTokenSymbol() {
        return stakingToken;
    }
    
    /**
     * 获取年化收益率（兼容方法 - 返回currentApy）
     * @return 年化收益率
     */
    public BigDecimal getApr() {
        return currentApy;
    }
}
